package chapter11;

import java.util.ArrayList;
import java.util.Collections;

public class sort27 {
    public static void main(String[] args) {
       /*
       有一个抽奖池,该抽奖池中存放了奖励的金额,该抽奖池中的奖项为 {10,5,20,50,100,200,500,800,2,80,300,700};
       创建两个抽奖箱(线程)设置线程名称分别为“抽奖箱1”，“抽奖箱2”
       随机从抽奖池中获取奖项元素并打印在控制台上,格式如下:
       每次抽出一个奖项就打印一个(随机)
       抽奖箱1 又产生了一个 10 元大奖
       抽奖箱1 又产生了一个 100 元大奖
       抽奖箱1 又产生了一个 200 元大奖
       抽奖箱1 又产生了一个 800 元大奖
       抽奖箱2 又产生了一个 700 元大奖          .....
       */
        //创建奖池
        ArrayList<Integer> list = new ArrayList<>();
        Collections.addAll(list,10,5,20,50,100,200,500,800,2,80,300,700);

        //创建线程
        MyThread6 t1 = new MyThread6(list);
        MyThread6 t2 = new MyThread6(list);

        //设置名字
        t1.setName("抽奖箱1");
        t2.setName("抽奖箱2");

        //启动线程
        t1.start();
        t2.start();
    }
}

class MyThread6 extends Thread {

    ArrayList<Integer> list;

    public MyThread6(ArrayList<Integer> list) {
        this.list = list;
    }

    @Override
    public void run() {
        //1.循环
        //2.同步代码块
        //3.判断
        //4.判断
        while (true) {
            synchronized (MyThread6.class) {
                if (list.size() == 0) {
                    break;
                } else {
                    //继续抽奖
                    Collections.shuffle(list);
                    int prize = list.remove(0);
                    System.out.println(getName() + "又产生了一个" + prize + "元大奖");
                }
            }
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    }
}